import React, { Dispatch, HTMLAttributes, SetStateAction, useMemo } from 'react';
import styled from 'styled-components';
import { CommonStyle } from '../common/common';
type Ctx =
| {
setOrder: Dispatch>;
defaultOrder: number;
}
| { setOrder: null; defaultOrder: null };
export const menuCtx = React.createContext(null!);
export interface MenuProps extends HTMLAttributes {
bgc?: string;
justify?: 'center' | 'start' | 'end' | 'space-between' | 'space-around';
children?: React.ReactNode;
setOrder?: Dispatch> | null;
defaultOrder?: number | null;
}
type PropsStyled = { bgc?: string };
const MenuStyled = styled(CommonStyle)`
background-color: ${(props: PropsStyled) => (props.bgc ? 'bgc' : 'inherit')};
display: flex;
gap: 120px;
align-items: center;
min-height: 40px;
position: relative;
padding: 0 50px;
`;
const Menu: React.FC = (props) => {
const { children, bgc, setOrder, defaultOrder, ...rest } = props;
const value = useMemo(() => {
if (setOrder && defaultOrder) {
return { setOrder, defaultOrder };
}
return { setOrder: null, defaultOrder: null };
}, [defaultOrder]);
return (
{children}
);
};
Menu.defaultProps = {
bgc: 'inherit',
justify: 'center',
children: '',
setOrder: null,
defaultOrder: null
};
export default Menu;